//
// Created by chizuru on 2025/9/4.
//

#pragma once
#include "CameraDevice.h"
#include "OperationResult.h"
#include "RetryPolicy.h"

namespace camera_link_bobcat{
    class ITransactionCommand {
    public:
        ITransactionCommand(CameraDevice& comm, const std::vector<std::pair<uint16_t,uint32_t>>& ops, RetryPolicy rp);

        virtual ~ITransactionCommand() = default;

        virtual OperationResult execute() = 0 ;

    protected:
        CameraDevice& comm;
        std::vector<std::pair<uint16_t,uint32_t>> ops;
        RetryPolicy rp;
    };

} // camera_link_bobcat

